/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System System Specific Module                         */
/*                                                                           */
/*    Copyright (C) 2010 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    netIP - Network IP packet procesing functions                          */
/*****************************************************************************/

#ifndef __netIP_h
#define __netIP_h
 
///////////////////////////////////////////////////////////////////////////////
// Includes
#include <krnlTypes.h>
#include <netSocket.h>

///////////////////////////////////////////////////////////////////////////////
// Constants
#define netIP_HEADER_LENGTH      20

//! IP Datagram Types
#define netIPDT_ICMP	0x01 
#define netIPDT_TCP		0x06 
#define netIPDT_UDP		0x11 

///////////////////////////////////////////////////////////////////////////////
// Global variables
extern IN_ADDR g_netIPAddress;

///////////////////////////////////////////////////////////////////////////////
// Types

typedef struct 
{
  dosByte Protocol;
  dosByte HeaderLength;
  dosWord PacketLength;
  IN_ADDR Address;
} netIPHeaderInfo;

///////////////////////////////////////////////////////////////////////////////
// Function prototypes
void netIPInitialize(void);
void netIPProcess(void);
void netIPCreateHeader( netIPHeaderInfo* in_header_info );
void netIPUpdateHeader( netIPHeaderInfo* in_header_info );
dosWord netIPCalculateChecksum( dosDWord in_checksum );

#endif